package br.com.tiespec.ejb.Util;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Aplica um algorítimo de hash (MD5, SHA1)
 * @author Hermann Miertschink Neto
 *
 */
public class CriptoHashUtil {

	private static final String algoritomoPadrao = "SHA1"; 
	
	/**
	 * Função para aplicar o hash em textos. Utiliza como padrão o valor SHA1
	 * @param str String a ser aplicado o hash
	 * @return String do hash aplicado
	 */
	public static String hash(String str){
		try {
			MessageDigest md = MessageDigest.getInstance(algoritomoPadrao);
			md.update(str.getBytes());
			BigInteger hash = new BigInteger(1, md.digest(str.getBytes()));  
			str = hash.toString(16);              
	        return str;  
		} catch (NoSuchAlgorithmException e) {
			System.out.println("ERRO: Ao aplicar o hash!");
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * Função para aplicar o hash em textos
	 * @param algoritimo Pode ser "MD5" ou "SHA1"
	 * @param str String a ser aplicado o hash
	 * @return String do hash aplicado
	 */
	public static String hash(String algoritimo, String str){
		try {
			MessageDigest md = MessageDigest.getInstance(algoritimo);
			md.update(str.getBytes());
			BigInteger hash = new BigInteger(1, md.digest(str.getBytes()));  
			str = hash.toString(16);              
	        return str;  
		} catch (NoSuchAlgorithmException e) {
			System.out.println("ERRO: Ao aplicar o hash!");
			e.printStackTrace();
		}
		return null;
	}
}